package cn.dujc.superkid.api;

import java.util.List;

import cn.dujc.superkid.bean.CupListResult;
import cn.dujc.superkid.bean.ExercisesPostResult;
import cn.dujc.superkid.bean.MessageEntity;
import cn.dujc.superkid.bean.UnitResult;
import cn.dujc.superkid.bean.VideoExaminationResult;
import cn.dujc.superkid.bean.VideoExaminationResultsResult;
import cn.dujc.superkid.bean.VideoIndexResult;
import cn.dujc.superkid.bean.VideoIndexResults;
import cn.dujc.superkid.bean.VideoListResult;
import okhttp3.Response;
import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;

/**
 * 6、选课中心
 */
public interface ApiCourse {

    /**
     * 课程列表
     * time	是	string	时间戳
     * token	是	string	token
     * channel	是	int	频道id
     * user_id	否	int	用户id
     * logincode	否	string	登陆验证（穿user_id的时候必须传这个）
     */
    @GET("video/index")
    public Call<VideoIndexResults> videoIndex(@QueryMap QMap map);

    /**
     * 单个课程首页
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * course_id	是	int	课程id
     * logincode	是	string	登陆验证代码
     * logincode	是	string	登陆验证代码
     * video_id	否	int	课程视频id
     */
    @GET("video/list")
    public Call<Result<VideoListResult>> videoList(
            @QueryMap QMap map);
    /**
     * 单个课程首页
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * cup_id	是	int	杯赛id
     * logincode	是	string	登陆验证代码
     * logincode	是	string	登陆验证代码
     * video_id	否	int	课程视频id
     */
    @GET("cup/list")
    public Call<Result<CupListResult>> cupList(
            @QueryMap QMap map);
    /**
     * 单个课程留言列表
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * course_id	是	int	课程id
     * logincode	是	string	登陆验证代码
     * video_id	否	int	课程视频id
     */



    @POST("video/message")
    public Call<Result<Object>> videoMessage(@QueryMap QMap map);

    @POST("cup/message")
    public Call<Result<Object>> cupMessage(@QueryMap QMap map);


    /**
     * 选课中心视频留言提交
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * video_id	是	int	视频id
     * content	是	string	留言内容
     * logincode	是	string	登陆验证代码
     */
    @FormUrlEncoded
    @POST("video/message")
    public Call<Result<Object>> videoMessagePost(@FieldMap QMap map);

    /**
     * 单个课程视频练习题（废合并到上面）
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * course_id	是	int	课程id
     * video_id	是	int	课程视频id
     * logincode	是	string	登陆验证代码
     *
     * @deprecated 废 ???
     */
    @Deprecated
    @GET("video/exercises")
    public Call<Result<List<VideoListResult.ExercisesEntity>>> videoExercises(@QueryMap QMap map);

    /**
     * 视频练习题处理答案
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * video_id	是	int	课程视频id
     * answer	是	string	答案
     * logincode	是	string	登陆验证代码
     * <b>测试的时候请在本地调用之前，查看题目的数量和答案提交数量是否匹配（有2个题目就需要有2个答案）</b>
     */
    @FormUrlEncoded
    @POST("video/exercises")
    public Call<Result<ExercisesPostResult>> videoExercisesPost(@FieldMap QMap map);

    /**
     * 加入我的课程
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * course_id	是	int	课程id
     * logincode	是	string	登陆验证代码
     * type_id	否	int	课程类型（默认为1），仅为1-选课中心课程，2-杯赛
     */
    @FormUrlEncoded
    @POST("video/course")
    public Call<Result<Object>> videoCourse(@FieldMap QMap map);

    /**
     * 标记视频是否已学习
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * course_id	是	int	课程id
     * video_id	是	int	课程视频id
     * logincode	是	string	登陆验证代码
     * type_id	否	int	课程类型（默认为1），仅为1-选课中心课程，2-杯赛
     */
    @FormUrlEncoded
    @POST("video/learning")
    public Call<Result<Object>> videoLearning(@FieldMap QMap map);

    /**
     * 练习题查看解析
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * exercises_id	是	int	练习题id
     * logincode	是	string	登陆验证代码
     *
     * @return 包含html代码的解析（看是否需要处理成结构化的数组）
     */
    @GET("video/analysis")
    public Call<Result<String>> videoAnalysis(@QueryMap QMap map);

    /**
     * 加入好题本
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * exercises_id	是	int	练习题id
     * type_id	是	int	课程类型（默认为1），类型(1-练习题，2-自测卷，3-考试，4-杯赛考试)
     * logincode	是	string	登陆验证代码
     */
    @FormUrlEncoded
    @POST("video/good_question")
    public Call<Result<Object>> videoGoodQuestion(@FieldMap QMap map);

    /**
     * 选课中心自测卷查看解析
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examination_subject_id	是	int	自测卷题目id
     * logincode	是	string	登陆验证代码
     *
     * @return 包含html代码的解析（看是否需要处理成结构化的数组）
     */
    @GET("video/examination_analysis")
    public Call<Result<String>> videoExaminationAnalysis(@QueryMap QMap map);

    /**
     * 选课中心自测卷详情
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examination_id	是	int	自测卷id
     * logincode	是	string	登陆验证代码
     */
    @GET("video/examination")
    public Call<Result<VideoExaminationResult>> videoExamination(@QueryMap QMap map);

    /**
     * 选课中心自测卷处理答案
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	自测卷id
     * answer	是	string	答案 (格式如：{"answer1":1,"answer2":[1,2,3]} answer+顺序:答案,多选题答案用[]）
     * when	是	string	用时（00:60:10） ,数据未做验证
     * logincode	是	string	登陆验证代码
     * <b>测试的时候请在本地调用之前，查看题目的数量和答案提交数量是否匹配（有2个题目就需要有2个答案
     * ，是多选题及时只有一个答案，也许要按这个[]这个来传参，否则会出错。数据我没做判断。）</b>
     */
    @FormUrlEncoded
    @POST("video/examination_results")
    public Call<Result<UnitResult.DataBean>> videoExaminationResults(@FieldMap QMap map);

    /**
     * 选课中心自测卷留言和考试留言
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	试卷id
     * type_id	是	int	请传入留言类型ID,且为数字，1-选课中心自测卷留言，2-在线考试留言
     * content	是	string	留言内容
     * logincode	是	string	登陆验证代码
     */
    @FormUrlEncoded
    @POST("message")
    public Call<Result<Object>> message(@FieldMap QMap map);

//    /**
//     * XXX
//     */
//    @GET("xxx_xxx")
//    public Call<Result<XxxXxx>> xxxXXX(@QueryMap QMap map);

//    /**
//     * XXX
//     */
//    @FormUrlEncoded
//    @POST("xxx_xxx")
//    public Call<Result<XxxXxx>> xxxXXX(@FieldMap QMap map);

}